RET Возврат из подпрограммы

Флаги не меняются.

Команда:

RET optional-pop-value 

Логика:

POP IP
    if FAR RETURN (внешний сегмент)
          POP CS
    SP = SP + optional-pop-value (если оно имеется) 

Команда RET передает управление из вызванной подпрограммы команде, следовавшей непосредственно за CALL, и делает это следующим образом :
- пересылает слово из верхушки стека в IP;
- если возврат осуществляется во внешний сегмент, то пересылает слово из новой верхушки стека в CS;
- увеличивает SP на значение операнда optional-pop-value, если оно задано.

Ассемблер сгенерирует возврат во внутренний сегмент, если подпрограмма, содержащая RET, будет обозначена программистом как NEAR, и возврат во внешний сегмент, - если как FAR. Операнд optional-pop-value определяет значение, которое надо прибавить к SP, что имеет смысл "освобождения" стека от "лишних" байтов (например, от входных параметров, когда они передаются подпрограмме через стек).

Операнды Такт байты (слова)ОбращенияБайтыПример
(внутр.сегм.,без pop)2011RET
(внутр.сегм., с pop)2413RET 4
(внешн.сегм.,без pop)3221RET
(внешн.сегм., с pop)3123RET 2

Hosted by uCoz